package com.yuehuanghun.admin.core.mapper;

import java.util.Set;

import com.yuehuanghun.admin.core.domain.SysDept;
import com.yuehuanghun.mybatis.milu.BaseMapper;
import com.yuehuanghun.mybatis.milu.annotation.NamingQuery;
import com.yuehuanghun.mybatis.milu.annotation.StatementOptions;

/**
 * 部门管理 数据层
 * 
 * @author yadmin
 */
public interface SysDeptMapper extends BaseMapper<SysDept, Long> {
	
	/**
	 * 统计下级有效部门的数量
	 * @param parentId 上级ID
	 * @param delFlag 删除标识
	 * @return 符合条件数量
	 */
	@NamingQuery
	int countByParentIdAndDelFlag(Long parentId, String delFlag);
	
	/**
	 * 查找下级指定名称的部门
	 * @param deptName 部门名称
	 * @param parentId 上级部门ID
	 * @return
	 */
	@NamingQuery
	SysDept findFirstByDeptNameAndParentId(String deptName, Long parentId);

	/**
	 * 查询角色所有部门的父级部门Id列表
	 * @param roleId 
	 * @return 关联部门的父级部门ID列表
	 */
	@NamingQuery
	@StatementOptions(selects = "parentId")
	Set<Long> findParentIdsByRolesRoleId(Long roleId);
}
